from fastmcp import FastMCP
# 创建一个FastMCP应用实例，名称为"demo"
# 这将作为所有工具的统一服务入口
app = FastMCP("demo")
# 定义一个名为"weather"的工具，用于查询城市天气
# 该工具接收一个字符串类型的城市名称作为参数
@app.tool(name="weather", description="城市天气查询")
def get_weather(city: str):
# 定义一个包含部分城市天气信息的字典
# 实际应用中这里可能会调用真实的天气API
    weather_data = {"北京": {"temp":25,"condition":"晴"},
                    "上海": {"temp":28,"condition":"多云"}
                    }
    # 返回对应城市的天气信息，如果城市不存在则返回错误信息
    return weather_data.get(city, {"error":"未找到该城市"})


# 注册股票查询工具，用于获取指定股票代码的价格信息
@app.tool(name="stock", description="股票价格查询")
def get_stock(code: str):
    # 预设的股票数据（实际应用中可替换为API调用）
    stock_data = {"600519": {"name":"贵州茅台","price":1825.0},
                  "000858": {"name":"五粮液","price":158.3}
                  }
    # 返回对应股票的信息，不存在则返回错误信息
    return stock_data.get(code, {"error": "未找到该股票"})


if __name__ == "__main__":
    # 启动应用，使用标准输入输出作为传输方式
    # 这意味着可以通过命令行与工具进行交互
    app.run(transport="stdio")

# if __name__ == "__main__":
#     # 启动HTTP服务，支持流式响应
#     app.run(
#         transport="streamable-http", # 使用支持流式传输的HTTP协议
#         host="localhost",           # 监听本地地址
#         port=4200,                   # 服务端口
#         path="/demo",                # 服务路径前缀
#         log_level="debug",           # 调试日志级别
#     )